export function expectFn(s, fn) {
  fn(s)
  return s
}

/**
 * 检查两个Map是否相等
 * @param {Map} map1
 * @param {Map} map2
 * @returns {Boolean}
 */
export function mapEquals(map1, map2) {
  if (map1.size !== map2.size) {
    return false
  }
  for (let [key, value] of map1) {
    if (map2.get(key) !== value) {
      return false
    }
  }
  return true
}

/**
 * 是否质数
 * @param {Integer} num
 * @returns {Boolean}
 */
export function isPrimeNum(num) {
  if (num === 1) {
    return false
  }
  for (var i = 2; i < num / 2 + 1; i++) {
    if (num % i == 0) {
      return false //不是质数
    }
  }
  return true //是质数
}

/**
 * 查找二进制中1的个数
 * @param {Number} n
 * @returns {Number}
 */
export function bitCount(n) {
  return n.toString(2).split('0').join('').length
  // let ret = 0
  // while (n) {
  //   n &= n - 1
  //   ret++
  // }
  // return ret
}
